Remove STRAIGHT_JOIN from ApiQueryLogEvents
authorBrad Jorsch <bjorsch@wikimedia.org>
Tue, 25 Feb 2014 15:04:30 +0000 (10:04 -0500)
committerSpringle <springle@wikimedia.org>
Wed, 26 Feb 2014 00:45:04 +0000 (00:45 +0000)
Per Sean Pringle:
> In all cases the STRAIGHT_JOIN forces an index scan on logging.times
> index, or more rarely a range access on logging.type_time index. Both
> query plans hit tens of millions of rows and take many minutes.
>
> Removing the STRAIGHT_JOIN allows the MariaDB query optimizer to
> choose a plan that takes seconds. Often it includes a filesort step,
> but more importantly it allows "index condition pushdown" which makes
> the filesort cheap.

Bug: 61889
Change-Id: Iad3905f29a2bdee1e3ebbfb2e1909b330faa8e81

includes/api/ApiQueryLogEvents.php

index 1578775..848c6ce 100644 (file)
@@ -65,7 +65,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
                // Order is significant here
                $this->addTables( array( 'logging', 'user', 'page' ) );
-               $this->addOption( 'STRAIGHT_JOIN' );
                $this->addJoinConds( array(
                        'user' => array( 'LEFT JOIN',
                                'user_id=log_user' ),